use crate::core::manifest::{ActivationEvent, ContributionKeywordDefinition, ExpansionManifest};
use super::plugin::StreamsPlugin;

pub fn create_streams_manifest() -> ExpansionManifest {
    ExpansionManifest {
        name: "streams".to_string(),
        version: "1.0.0".to_string(),
        description: "提供事件流通信机制的技术特性插件".to_string(),
        publisher: "platform".to_string(),
        readme: None,
        dependencies: None,
        implementation: || Box::new(StreamsPlugin::new()),
        activation_events: vec![ActivationEvent::Simple("system.startup".to_string())],
        deactivation_events: None,
        contributes: None,
        dynamic_contributes: None,
        contribution_points: None,
        dynamic_contribution_points: None,
        contribution_keywords: Some(vec![
            ContributionKeywordDefinition {
                name: "streams".to_string(),
                support_contribution_point: Some(true),
                support_dynamics: Some(true),
                provide_context: Some(true),
                context_name: None,
                disable_namespace_rule: Some(false),
            }
        ]),
        provide_context: None,
        context_name: None,
    }
}